iT邦幫忙

2021 iThome 鐵人賽

DAY 16
0
Mobile Development

麻瓜學習 iOS 開發系列 第 16

Day16:SwiftUI—GeometryReader

  • 分享至 

  • xImage
  •  

前言

前面幾天介紹了很多設計 SwiftUI 畫面的元件,
那要怎麼知道元件的位置和尺寸大小呢?
這邊就要引出 GeometryReader。

實做

  • 打開一個專案,
    並在 ContentView 裡宣告一個矩形:

    我們 hardcode 了這個矩形的尺寸,
    但是我們常常在不同的裝置上跑我們的 code,
    這樣 hardcode 的方式肯定行不通,
  • 通過 GeometryReader 來使用相對值確定元件的尺寸:


    我們會發現這個矩形位於左上角,
    這是因為我們放入 GeometryReader 的所有東西自動定位在左上角。
    在 ContentView 裡面點擊 GeometryReader 時會看到整個框架,
    即整個可用空間。
    所以我們可以通過訪問其參數來確定尺寸大小:

  • 通過 GeometryReader 來定位相對於 global 坐標
    添加 onTapGesture 並且印出兩個變數 x、y,
    來表示 x 軸、y 軸:

    有 global - 相對於全局即全屏的坐標,
    local - 相對於其父級的局部坐標,
    這邊選擇 global。


    選擇 x、y 的最小坐標:

    打開 simulator 並點擊矩形:

    打開控制台:

    這表示相對於整個屏幕 x 的位置距離是 0,
    y 相對於屏幕上方距離是 47。
  • 定位相對於 local 坐標
    將 global 改成 local print 出來:


    出現 x:0,y:0,
    因為 local 是相對於其父級即 GeometryReader 的定位:
  • 在 GeometryReader{} 後添加 ignoreSafeArea

    矩形出現在屏幕左上方,

    global、local 所表示的區域都是整個屏幕,
    所以 x、y 值都為 0。

上一篇
Day15:SwiftUI—TabView
下一篇
Day17:SwiftUI— EnvironmentObject
系列文
麻瓜學習 iOS 開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言